package com.xbongbong.paas.bi.pojo;

import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.util.List;
import java.util.Map;

/**
 * 连接节点
 * @author zcp
 * @version v1.0
 * @since v1.0
 */
@Data
@ToString
public class DataSetNodeJoinPojo extends DataSetNodePojo {
    private static final long serialVersionUID = 3494199115095920125L;
    /**
     * 流入节点的节点id集合
     * 连接节点有且仅有2个流入节点
     */
    @Size(min = 2, max = 2, message = "{pojo.msg.dataSetNodeJoin.input.Size}")
    private List<String> input;
    /**
     * 是否“合并连接字段”，1是0否
     */
    private Integer mergeLinkField;
    /**
     * 连接方式3种："left","right","inner"
     * @see com.xbongbong.paas.enums.bi.DataSetJoinEnum
     */
    @NotBlank(message = "{pojo.msg.dataSetNodeJoin.join.NotBlank}")
    private String join;
    /**
     * 字段格式：[{"node_xx3":"3&text_2&123","node_xx4":"4&serialNo"},{"node_xx3":"3&text_2&123","node_xx4":"4&serialNo"}]
     * 多表配置：关联字段。后端拼sql(确认连接字段)、及前端渲染使用
     * key为节点id，value为表单id和字段名、字段fieldType - 第一个&符前是表单id，第一个&符后是(映射后)字段名，第二个&符后是字段fieldType
     */
    @NotEmpty(message = "{pojo.msg.dataSetNodeJoin.relation.NotEmpty}")
    private List<Map<String, String>> relation;
    /**
     * 连接节点左右表连接后形成的field
     */
    private List<DataSetNodeFieldPojo> field;
    /**
     * 连接节点左右表连接后形成的hideField
     */
    private List<DataSetNodeFieldPojo> hideField;
    /**
     * 过滤条件
     * key：节点id
     * value：筛选条件
     */
    private Map<String, List<DataSetNodeFilterPojo>> filter;
}
